Selecting a preferred server from groups of servers based on geographical information obtained from the requesting client

ABSTRACT

Redirecting a client request for digital information to a server by selecting a server based on client location. The client location derived from a query to a client application such as a modem dial-up application or a mobile phone Global Positioning System. The client location information being used in combination with a listing of groups of servers as well as a listing of servers having the requested digital information to select a preferred server satisfying geographical preferences.

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This is a continuation in part of U.S. Ser. No. 09/565,400“METHOD TO OPTIMIZE THE NETWORK DISTRIBUTION OF DIGITAL INFORMATIONBASED ON HIERARCHICAL GROUPING OF SERVER TOPOLOGY AND CODE DISTRIBUTION”filed on May 5, 2000.

FIELD OF INVENTION

[0002] The subject of the present invention in general pertains tocomputer systems including servers and clients communicating over anetwork. The invention more particularly relates to efficientlydistributing digital information such as Software programs from serversto clients.

BACKGROUND OF THE INVENTION

[0003] The industry utilizes a wide variety of software products from awide variety of sources, designed for a wide variety of environments. Insome cases, software applications assist in organizing these products inorder to provide consistency among users. As an example, a company maywish to restrict the number and version of applications the end usersare using in the company in order to more efficiently manage their ITresources. Program products are needed that provide the service ofmanaging software applications including distributing appropriateversions and updates. FIG. 2 and FIG. 3 depict a high level view of thedownload process of prior art systems. A list of servers is presented toa user 901 who selects one for downloading a package of digital data801. If the download is not successful 902, the user can select anotherserver if available. One such product (ISSI) is described as follows:

[0004] The IBM Standard Software Installer (ISSI) is a product used toprovide a wide variety of program applications within an enterprise todistributed users FIG. 1. The product is described as it might be usedwithin the IBM corporation for example. The product could also be usedin any other entity with modifications that would be obvious to oneskilled in the art. This solution is the initial step towards acomprehensive Web-based electronic software distribution solution. Thenext step includes a dynamic package catalog and the integration of theTME10 SD for FW as the software distribution engine 1 2 3. This willallow management of the desktop via the other integrated Tivoliapplications.

[0005] The architectures and, in many aspects, the actual implementationemployed in this solution largely follow the Operating System Platforms(OSP) software distribution architectures and implementations that arecurrently exploited for the Client for e-business Windows 95, Windows NT4, Windows 2000, Windows XP, Linux, and OS/2 offerings.

[0006] ISSI Solution Highlights:

[0007] A. Easy to use interface for the end-user

[0008] B. Automated installations

[0009] 1. Response file driven installations; Minimized end userintervention; configuration consistency; reduced end-user installsupport (doc, education); reduced end-user induced errors.

[0010] a. Products with native support for response files

[0011] b. OSP's MagicWin installation technology for products that donot support response files natively

[0012] 2. Pre-prompting for installation variables; a subset of thetotal variables required for the package install, predetermined valuesfor others; end-user selects options and install proceeds withoutfurther intervention

[0013] C. OSP Packaging Architecture Based Packages

[0014] 1. Delivery tool independent; Reusable for all OSP solutions(TME10 SD for AIX, TME10 SD for Framework, Static and Dynamic Web, CDsource installs).

[0015] D. Consistent technology and package install behavior across allClient for e-business deliverables.

[0016] 1. Leveraged service delivery center skill

[0017] 2. Leveraged end-user education/expectations

[0018] E. Infrastructure

[0019] 1. Established package distribution process

[0020] 2. Leverage of existing service delivery center infrastructure

[0021] 3. TCP/IP based offering

[0022] 4. Multiple servers, selected based on topological closeness toclient

[0023] 5. After the “One-time client setup” is run, all support code andconfiguration files that reside on the client are automatically keptcurrent from the server

[0024] a. Server targets definitions

[0025] b. Installer programs

[0026] c. Userids/Passwords for server access

[0027] 6. Multiple servers support based on Virtual Private Network(VPN) information. According to the World Wide Web URL“SearchTech.Target.com” a Virtual Private Network (VPN) is a way to usea public telecommunication infrastructure, such as the Internet, toprovide remote offices or individual users with secure access to theirorganization's network. A virtual private network can be contrasted withan expensive system of owned or leased lines that can only be used byone organization. The goal of a VPN is to provide the organization withthe same capabilities, but at a much lower cost.

[0028] A VPN works by using the shared public infrastructure whilemaintaining privacy through security procedures and tunneling protocolssuch as the Layer Two Tunneling Protocol (L2TP). In effect, theprotocols, by encrypting data at the sending end and decrypting it atthe receiving end, send the data through a “tunnel” that cannot be“entered” by data that is not properly encrypted. An additional level ofsecurity involves encrypting not only the data, but also the originatingand receiving network addresses. (FIG. 1) Illustrative Web ShoppingServer Topology

[0029] Web “Master” Server

[0030] The Master URL (w3.ibm.com/download/standardsoftware) is hostedby the corporate Web support organization (maintainers of the w3.ibm.comURL). This will provide a single logical server presence and takeadvantage of the redundancy and load balancing that is provided to allw3.ibm.com hosted web pages. The Master web server will be establishedby OSP and the Global Projects Solutions (GPS) project office.

[0031] ISSI Pages:

[0032] The ISSI pages follow the IBM Intranet page standards ensuring aconsistent look and feel with other pages hosted on the IBM intranet(w3.ibm.com). Key page destinations within the ISSI “site” are directlyaccessible from every ISSI page via navigational tabs (NavTab) on thepage mastheads for planning for and deploying the ISSI Web basedshopping solution.

[0033] The hierarchy of the ISSI shopping pages is:

[0034] I. Home/Overview

[0035] A. FAQ (available from every page via NavTab)

[0036] B. User's Guide (available from every page NavTab)

[0037] C. Client Setup

[0038] D. Geography Page

[0039] E. Operating System Catalog (available from every page NavTabwithin Geography)

[0040] 1. Package Links

[0041] 2. Package Information Page

[0042] 3. Package Prompt and Install Page

[0043] A novel method for selecting a server to handle a client requestfor digital data is described in “METHOD, APPARATUS AND PROGRAM PRODUCTTO OPTIMIZE THE NETWORK DISTRIBUTION OF DIGITAL INFORMATION BASED ONHIERARCHICAL GROUPING OF SERVER TOPOLOGY AND CODE DISTRIBUTION” U.S.patent application Ser. No. 09/565,400 filed May 5, 2000 assigned to IBMand is hereby incorporated by reference in the present application.

SUMMARY OF THE INVENTION

[0044] It is an object of this invention to provide digital data to aclient computer from a preferred server using geographical informationretrieved from the client computer.

[0045] It is another object of the invention to determine a preferredserver from a group of servers based on proximity of the servers to aclient computer.

[0046] It is yet another object of the invention to determine apreferred server from a group of servers based on availability of theserver.

[0047] It is still another object of the invention to provide digitaldata to a client from a default server if no preferred server is found.

[0048] It is further an object of the invention to provide serverinformation relating subnets or domains to servers in order to determinethe preferred server.

[0049] It is further an object of the invention to provide serverinformation relating Virtual Private Network (VPN) internal IP addressranges to servers in order to determine the preferred server.

[0050] It is lastly an object of the invention to provide serverinformation relating availability of required digital data at theservers.

[0051] These and other objects, features and advantages of the inventionwill be apparent to those skilled in the art in view of the followingdetailed description and accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0052] The subject matter which is regarded as the invention isparticularly pointed out and distinctly claimed in the concludingportion of the specification. The invention, however, both as toorganization and method of practice, together with further objects andadvantages thereof, may best be understood by reference to the followingdescription taken in connection with the accompanying drawings in which:

[0053]FIG. 1 is a high level schematic diagram of a Web Shopping Servernetwork;

[0054]FIG. 2 illustrates a high level flowchart of the prior art;

[0055]FIG. 3 illustrates prior art ISSI flowchart of the downloadfunction;

[0056]FIG. 4 illustrates an example redirection algorithm of anembodiment of the invention;

[0057]FIG. 5 illustrates an example attempt group sub-process of theinvention;

[0058]FIG. 6 illustrates an example attempt other groups sub-process ofan embodiment of the invention; and

[0059]FIG. 7 illustrates an example VPN sub-process of the invention.

DETAILED DESCRIPTION OF THE INVENTION

[0060] The ISSI product solves the problem by providing an algorithmthat utilizes a set of predefined hierarchies to determine a hierarchyof servers capable of efficiently supplying the required software to theclient end user.

[0061] Redirection to Image Staging Servers

[0062] The Web Master server 4 contains a set of tables that are used toidentify the image staging server (defined in section “Staging Server”)to be used for a package installation. The first table used is the imagestaging server redirection table (described in Table 3 “Image StagingServer Redirection Table Specification”). The table, which defines theglobal image staging server 3 topology, specifies the following:

[0063] A. Each ISSI image staging server.

[0064] B. Domain specific server groups.

[0065] C. Subnet specific server groups.

[0066] D. Subnet range server groups.

[0067] E. VPN internal IP address range server groups (referred to asVPN server groups).

[0068] F. SDC default server groups.

[0069] G. A master default server group.

[0070] H. A list of default subnet masks.

[0071] The table 503 is maintained by OSP with information supplied byservice delivery center (SDC) representatives. The table is used by theOSP installation programs to identify the server to be used for aspecific package installation. The decision is based on the targetmachine's 5 TCP/IP domain name, the subnet portion of its IP address, orVPN information. In general, the staging server redirection algorithmuses the domain, subnet, or VPN information to identify a server groupthat is geographically close to the client machine. It randomly selectsa server from that server group to perform the installation. Thealgorithm is described in detail in section “Image Staging ServerRedirection Algorithm”.

[0072] SDC representatives provide OSP with the staging server 3 andserver group information required to define their SDC's topology. Forlocations that define TCP/IP domains based on specific geographicallocations, domain specific server groups are the preferred method foridentifying the candidate servers to be used for deliveries to theirclients. For locations were TCP/IP domains are spread over wide orscattered geographical areas, subnet specific and subnet range servergroups are used (in that order). Subnet specific server groups mayrepresent a class B or class C subnet. For remote users connected to anInternet Service Provider (ISP) network accessing the corporate networkvia a VPN client, VPN server groups are used. SDC representatives mayalso define a SDC default server group. The SDC default server group isassociated with the corresponding SDC domain, subnet, subnet range, orVPN server groups. It is used when none of the servers in a domain,subnet, subnet range, or VPN server group can be used to deliver apackage (see section “Image Staging Server Redirection Algorithm”). TheSDC representative may also specify the “SDC default group message” thatis displayed to the customer before a SDC default server group is used.When defining the SDC default group, the SDC representative specifieswhether the master default server group is to be used in the case thatnone of the servers in the SDC default group can be used to install thepackage.

[0073] The table 503 contains a special server group, the master defaultserver group, which is used in two circumstances: (1) when no domain,subnet, subnet range, or VPN server group matches a client's IP/VPNinformation, or (2) when no server in a SDC default server group can beused to deliver a package. The master default server group is guaranteedto contain at least one OSP owned server that contains all productionISSI packages.

[0074] In addition to the image server redirection table, the Web masterserver contains a number of package server availability tables(described in Table 5 “Package Server Availability Tables”). The servercontains one table per ISSI package. Each availability table containsthe names of the staging servers that contain the package. Theavailability tables are generated by an agent which periodicallyconnects to every staging server to discover its packages. In general,the staging server redirection algorithm uses the corresponding packageserver availability table to identify the servers within a selectedserver group that contain the respective package.

[0075] Image Staging Server Redirection Algorithm

[0076] The OSP staging server redirection algorithm (FIGS. 4, 5 and 6)follows:

[0077] 1. Obtain the target machine's TCP/IP address, subnet mask anddomain. Using the IP address and subnet mask, determine the targetmachine's subnet 501.

[0078] 2. Retrieve 502 the image staging server redirection table 503and the corresponding package server availability table 504.

[0079] 3. Using the image staging server redirection table 503, identifythe server group to be used as the “group of candidate servers”. First,look for a matching subnet specific server group 505. If none is found,then look for a subnet range server group that includes target machine'ssubnet 511. If none is found, then look for a domain specific servergroup 507. If none is found, then look for a VPN server group 702 (fordetails, see “Redirecting VPN Clients” below). If none is found, thenlook for a class B subnet 709 (for details, see “Class B Subnet Logic”below). If none is found 712, then use the master default server group509.

[0080] 4. Using the package server availability table 504, identify theservers in the group of candidate servers that contain the package 610.Remove servers that do not contain the package from the group ofcandidate servers 610.

[0081] 5. Randomly choose a server from the group of candidate servers611. If a failure occurs connecting to the server or downloading thepackage image from the server 620, then the chosen server is excludedfrom the group of candidate servers 612. If the group of candidateservers is exhausted 620, then proceed with the next step 614.Otherwise, repeat this step 611.

[0082] 6. If none of the servers in the group of candidate servers canbe used to successfully install the product 615, then determine the typeof default server group specified for the group of candidate servers (byinspecting keyword “default_group”) 615. Proceed as follows depending onthe type of default server group specified:

[0083] a) If no default server group is specified(“default_group=NONE”), then the installation can not be performed 616.If the group of candidate servers is the master default group, then nodefault server group will be specified for it. Note that the masterdefault server group is the last server group that can possibly beattempted, so it must be specified with no default group.

[0084] b) If a SDC default server group is specified(“default_group=default_<SDC reference>”), then repeat steps 4-6 617with the SDC default server group as the group of candidate servers. Ifan SDC default group message is available, the message is firstdisplayed to inform the user than an SDC default group is about to beused.

[0085] c) If the master default server group is specified(“default_group=default”), then repeat steps 4-6 617 with the masterdefault server group as the group of candidate servers. A standardmessage is first displayed to inform the user that the master defaultgroup is about to be used.

[0086] Redirecting VPN Clients:

[0087] Referring to FIG. 7, Redirection of Virtual Private Networkclients is accomplished by: (1) obtaining the client's internal IPaddress, and (2) identifying a VPN internal IP address range servergroup that includes the internal IP address. The ISSI client code usestwo methods to discover the client's internal IP address. The firstmethod involves communicating with the MTS Global Net Client, IBM'sstandard Client for e-business VPN client, via the MTS API 750. Thesecond method involves requesting the internal IP address from serverslisted in section IPAddrQueryServers of the ISSI routing table 753. Theserver requests are made by sending an HTTP transaction to either a Webpage containing a server side include or a CGI script. The serverrequest method and the corresponding Web page or CGI script arespecified in the ISSI routing table for each server. The server sideinclude and the CGI script query environment variable REMOTE_ADDR, whichcontains the client's IP address as viewed by the Web server, andreturns the value to the ISSI client code. The ISSI client code comparesthe “candidate” VPN internal IP address to the target machine's “locallyobtained” IP address 751/755. If the values are different, then the ISSIclient code looks for a VPN internal IP address range server group thatincludes the VPN internal IP address 752/756.

[0088] Class B Subnet Logic

[0089] The ISSI routing table contains a list of default subnet masks.For each default subnet mask, use the target machine's TCP/IP addressand the default subnet mask to create a “class B subnet”. Then, look fora corresponding subnet specific server group. If none is found, look fora subnet range server group that includes the target machine's class Bsubnet.

[0090] ISSI CGI

[0091] The ISSI master server has a CGI script defined to processend-user input from the Web interface. This input is entered by theend-user on the specific package installation page. The CGI uses theend-user input to construct a package parameter file (example Table x1)that describes the package that is to be installed and key customizationoptions selected for the target machine. In a preferred embodiment, eachpackage that is available for installation through the Web basedshopping solution will have a corresponding package parameter filecreated by the CGI on the Master Web server. This file containsinformation to signal the package installer about the package that hasbeen selected for installation. Any configuration information specifiedby the end-user is included in this file by the server CGI script. Thisfile has the format of a Windows 3.x style INI file. TABLE 1 ExamplePackage Parameter File Contents: [parameters] deliverymethod= Type ofdelivery; one of: staticweb, dynamicweb, Tiv, NVDM globalname= Tokenbased package descriptor pkgname= Descriptive name of package nos=Network operating system to use to access the image server (CopyLocal,RemoteMount, NFS, FTP, NTS...); Overrides clients WEB.INI. LocalStgPath=Directory on the client where the product images will be staged to whenNOS=FTP/HTTP [First Contact server] servername= Fully qualified TCPIPname of the first contact server nos= Transport method for obtaining theimage server redirection table: NFS, FTP, HTTP remoteserverpath= Path tothe image server redirection table key= Flag indicating the encryptionlevel of key1 and key2 (00=key1/key2 plain text, 11= key1/key2 Level 1encrypted) key1= Userid for access to the first contact server (ifnos=FTP) key2= Password for access to the first contact server (ifnos=FTP) [responses] <response 1-“n” response descriptors and responsesdescriptor>= that will be used to create the installation response filefor the package.

[0092] Sample Package Parameter File:

[0093] [parameters]

[0094] nos=NFS

[0095] deliverymethod=staticweb

[0096] pkgname=Lotus Notes 4.53a

[0097] globalname=LOT.LNC_EN.W32.1NSTALL.CLIENT_W32.PLAT.REF.453000.A

[0098] [First Contact server]

[0099] servername=d02ftp001.southbury.ibm.com

[0100] nos=ftp

[0101] remoteserverpath=/home/ospwebc1/swdist/repos

[0102] key=11

[0103] key1=xxxxx

[0104] key2=xxxxx

[0105] [responses]

[0106] LNC45300_installdrive=C

[0107] username=IBM Employee

[0108] companyname=IBM

[0109] Table 2 (Example WEB.INI File Contents):

[0110] The WEB.INI file has the format of a Windows 3.x style INI fileand resides on the software distribution target. It has two possiblestanzas (sections). The stanzas and respective keys follow: [Stanza]/Keyname Description [ImageServer] dllName= Name of the image server dll forOS/2 and 16 bit windows dllName32= Name of the image server dll for 32bit windows ServerName= Fully qualified TCPIP name of the first contactserver Nos= Transport method for obtaining the image server redirectiontable: FTP, HTTP LocalStgPath= Directory on the client where the productimages will be staged to when NOS=FTP RemoteServerPath= Path to theimage server redirection table key= Flag indicating the encryption levelof key1 and key2 (00=key1/key2 plain text, 11= key1/key2 Level 1encrypted) key1= Userid for access to the first contact server (ifnos=FTP) key2= Password for access to the first contact server (ifnos=FTP) [LogFiles] TrimLogFile= Should the OSP log file be trimed tokeep it from growing too big ? (yes/no) MaxLogFileSize= Maximum size forthe log file in bytes.

[0111] Sample WEB.INI File:

[0112] [imageserver]

[0113] dllname32=pw32gis.dll

[0114] servername=d02ftp001.southbury.ibm.com

[0115] nos=ftp

[0116] remoteserverpath=/home/ospwebc1/swdist/repos

[0117] key=11

[0118] key1=xxxxx

[0119] key2=xxxxx

[0120] REM Uncomment localStgPath and set it to the path you want FTP touse for temp space.

[0121] REM Only do this if you need to force it to a specific drive.

[0122] REM localStgPath=c:\swd

[0123] [logfiles]

[0124] trimlogfile=yes

[0125] maxlogfilesize=50000

[0126] Table 3 (Example Staging Server Redirection Table Contents):

[0127] The image server redirection table has the format of a Windows3.x style INI file. It has six types of stanzas (sections):

[0128] 1. Definition of the logging server and script to execute toperform log function on that server.

[0129] 2. Definition of default server settings.

[0130] 3. Definition of default subnet masks (for use by the ISSIrouting algorithm to create candidate class B subnets).

[0131] 4. A list of servers from which ISSI may request clients' VPNinternal IP addresses.

[0132] 5. A list of servers to service a particular IP address, TCPIPdomain, IP subnet, IP subnet range, or VPN internal address range. Thesection name is a target's IP address, TCPIP domain name, IP subnetvalue, IP subnet value range, VPN internal address range, or the name ofa default server group. The key values are fully qualified TCP/IP namesof the servers for this set of clients.

[0133] 6. Image server section that defines the access method detailsfor each server 4. [Stanza]/Key name Description [HTTPLogServer]ServerName= The fully qualified TCPIP name of the HTTP server to whichweb installation event logging should be performed. ScriptName= The fullpath name of the CGI script used to log web installation events.[DefaultServerSettings] ftpDataMode= The FTP data mode used by ISSI(active or passive). [DefaultSubnetMasks] numDSN= Number of defaultsubnet masks (for use by the ISSI routing algorithm to create candidateclass B subnets). dsnX= Default subnet mask X (for use by the ISSIrouting algorithm to create candidate class B subnets).[IPAddrQueryServers] List of servers from which ISSI may requestclients' VPN internal IP addresses. serverX= ServerX from which ISSI mayrequest clients' VPN internal IP addresses. typeX= Type of request thatmay be sent to serverX, i.e., SSI (server side include) or CGI (CommonGateway Interface). filenameX= The name of the Web page or CGI scriptthat will handle the request at serverX. [<server group The name for oneof a variety of server name>] group types, including: single IP address,IP subnet, IP subnet range (i.e., [SUB- <starting IP subnet>-<ending IPsubnet]), IP domain name, VPN internal IP address range (i.e.,[VPN-<starting IP address>- <ending IP address]), SDC default group name(i.e., [default_<SDC reference>]), or master default (i.e., [default]).NumberOfServers= The total number of servers defined for this domainServerX= The TCP/IP name of Server number X where x is a value of one toNumberOfServers inclusive ProxyServerX= The TCP/IP name of proxy serverX for server X. Follow the name of the server with a colon and the portnumber of the proxy server if it is not port 80. default_group= ISSIDefault server group [<Servername>] Nos= Network operating system to useto access the image server (NFS, FTP, HTTP, NTS...); Overridden bypackage parameter file RemoteServerPath= The root directory on theserver where the software repository is located key= Flag indicating theencryption level of key1 and key2 (00=key1/key2 plain text, 11=key1/key2 Level 1 encrypted) key1= Userid for access to the image serverkey2= Password for access to the image server RemoteMountNos= Networkoperating system to use if NOS=RemoteMount is specified. CopyLocalNos=Network operating system to use if NOS=CopyLocal specified.httpRemoteServerPath= The path to the software repository relative tothe web server document root. httpDirListMethod= Method for HTTP to useto get the directory listing from the server (CGI, FTP)httpCgiScriptName= Path to the CGI script to use for HTTP directorylistings if httpDirListMethod=cgi adminName= Name of the administratorfor this server. adminEmail= E-Mail address for the administrator.ftp_data_mode FTP Mode [Active|Passive] (for future use).DefaultSubnetMasks] numDSN= Total number of default subnet masks. dsnX=Default subnet mask X (where X=1, 2,..).

[0134] Sample Image Server Redirection Table:

[0135] The sample table depicted below contains the following:

[0136] Image server “milhouse.pok.ibm.com” (uses NFS protocol).

[0137] Image server “milhouse.pok.ibm.com” (uses FTP protocol).

[0138] Image server “sybil.pok.ibm.com” (uses HTTP protocol).

[0139] Subnet specific server group “9.117.162.0”.

[0140] Domain specific server groups “pok.ibm.com” and“fishkill.ibm.com”.

[0141] Subnet range server group “SUB-9.117.0.0-9.117.31.0”.

[0142] VPN internal IP address server group “VPN-9.31.0.0-9.31.255.255”.

[0143] SDC default group “default_us_north”.

[0144] Master default group “default”.

[0145] [HTTPLogServer]

[0146] ServerName=ospdb.pok.ibm.com

[0147] ScriptName=/cgi-bin/weblog.sh

[0148] [DefaultSubnetMasks]

[0149] numDSN=1

[0150] dsn1=255.255.0.0

[0151] [flounder.fishkill.ibm.com]

[0152] nos=nfs

[0153] remoteserverpath=/swdist/repos

[0154] adminName=Bill Admin

[0155] adminEmail=billadmin@us.ibm.com

[0156] remoteMountNOS=nfs

[0157] copyLocalNOS=ftp

[0158] key=11

[0159] key1=xxxxx

[0160] Key2=xxxxx

[0161] ftp_data_mode=active

[0162] [milhouse.pok.ibm.com]

[0163] nos=nfs

[0164] remoteserverpath=/swdist/repos

[0165] adminName=Joe Admin

[0166] adminEmail=joeadmin@us.ibm.com

[0167] remoteMountNOS=nfs

[0168] copyLocalNOS=ftp

[0169] key=11

[0170] key1=xxxxx

[0171] Key2=xxxxx

[0172] ftp_data_mode=passive

[0173] [sybil.pok.ibm.com]

[0174] nos=nfs

[0175] remoteserverpath=/swdist/repos

[0176] adminName=Joe Admin

[0177] adminEmail=joeadmin@us.ibm.com

[0178] remoteMountNOS=nfs

[0179] copyLocalNOS=http

[0180] httpRemoteServerPath=/repos

[0181] httpDirListMethod=cgi

[0182] httpCgiScriptName=/cgi-bin/dirlist.sh

[0183] key=11

[0184] key1=xxxxx

[0185] Key2=xxxxx

[0186] ftp_data_mode=active

[0187] [9.117.162.0]

[0188] NumberOfServers=2

[0189] Server1=milhouse.pok.ibm.com

[0190] Server2=sybil.pok.ibm.com

[0191] ProxyServer2=proxya.pok.ibm.com:8080

[0192] default_group=default_us_north

[0193] default_group_msg1=Package not found on any local servers.

[0194] default_group_msg2=Do you wish to use a US North server?

[0195] [pok.ibm.com]

[0196] NumberOfServers=1

[0197] Server1=sybil.pok.ibm.com

[0198] ProxyServerl=proxyb.pok.ibm.com:8080

[0199] default_group=default_us_north

[0200] default_group_msg1=Package not found on any local servers.

[0201] default_group_msg2=Do you wish to use a US North server?

[0202] [fishkill.ibm.com]

[0203] NumberOfServers=1

[0204] Server1=flounder.fishkill.ibm.com

[0205] Default_group=default

[0206] [SUB-9.117.0.0-9.177.31.0]

[0207] NumberOfServers=2

[0208] Server1=milhouse.pok.ibm.com

[0209] Server2=sybil.pok.ibm.com

[0210] ProxyServer2=proxya.pok.ibm.com:8080

[0211] default_group=default_us_north

[0212] default_group_msg1=Package not found on any local servers.

[0213] default_group_msg2=Do you wish to use a US North server?

[0214] [VPN-9.31.0.0-9.31.255.255]

[0215] NumberOfServers=2

[0216] Server1=milhouse.pok.ibm.com

[0217] Server2=sybil.pok.ibm.com

[0218] ProxyServer2=proxya.pok.ibm.com:8080

[0219] default_group=default_us_north

[0220] default_group_msg1=Package not found on any local servers.

[0221] default_group_msg2=Do you wish to use a US North server?

[0222] [default_us_north]

[0223] NumberOfServers=1

[0224] Server1=milhouse.pok.ibm.com

[0225] default_group=default

[0226] default_group_msg1=Package not found on any US North server.

[0227] default_group_msg2=Do you wish to use a default server?

[0228] [default]

[0229] NumberOfServers=2

[0230] Server1=sybil.pok.ibm.com

[0231] Server2=flounder.fishkill.ibm.com

[0232] Default=NONE

[0233] Image Staging Server Redirection Algorithm Examples:

[0234] The following scenarios depict how the preceding sample table isused. To simplify the examples, an assumption is made that all serversin the sample table contain all ISSI packages and the description islimited to how the server groups are used.

EXAMPLE 1 Using a Domain Specific Server Group with a SDC Default Group

[0235] The client workstation has the following TCP/IP information:hostname pugsly.pok.ibm.com i.p. 9.117.82.61 address subnet255.255.255.0 mask subnet 9.117.82.0

[0236] The installation program proceeds as follows:

[0237] First, it attempts to find a matching subnet specific group, i.e.“9.117.82.0”. Since the subnet specific server group is not in thetable, it then attempts to find a matching domain specific group, i.e.pok.ibm.com. The domain specific server group exists, so “pok.ibm.com”becomes the group of candidate servers.

[0238] The program selects a server from the group of candidate servers.Since only one server is contained in the group, it selects“sybil.pok.ibm.com”. If the installation program fails to connect to theserver or fails to download the package image files from the server,then it removes the server from the group of candidate servers. Sincethe group contains no other servers, the program now determines whethera default group exists for the group of candidate servers.

[0239] A SDC default group is specified for the group of candidateservers, so group “default_us_north” becomes the new group of candidateservers. Before using the SDC default group, the program prompts theuser with SDC default group message “Package not found on any US Northserver. Do you wish to use a default server?”

[0240] Assuming the user chooses to continue, then the program randomlyselects a server from group “default_us_north”. It selects“milhouse.pok.ibm.com”. If the server fails similarly to“sybil.pok.ibm.com”, then it removes the server from the group ofcandidate servers. Since the group contains no other servers, theprogram again determines whether a default group exists for the group ofcandidate servers. In this case the default group is the master defaultstaging server group (default_group=default). Therefore, the masterdefault server group becomes the candidate server group. Before the newgroup is used, the user is prompted with a standard message. The masterdefault server group is the last group attempted.

EXAMPLE 2 Using a Subnet Specific Server Group W/Associated SDC DefaultGroup:

[0241] The client workstation has the following TCP/IP information:hostname vuozzo.pok.ibm.com i.p. 9.117.162.45 address subnet255.255.255.0 mask subnet 9.117.162.0

[0242] The installation program first attempts to find a matching subnetspecific group, i.e. “9.117.162.0”. Since the server group exists, group“9.117.162.0” becomes the candidate staging server group. The rest ofthe logic is similar to example 1. The next group of candidate serversis “default_us_north” followed by the master default group.

EXAMPLE 3 Using a Domain Specific Server Group Without Associated SDCDefault Group

[0243] The client workstation has the following TCP/IP information:hostname sunny.fishkill.ibm.com i.p. 9.119.81.61 address subnet255.255.255.0 mask subnet 9.119.81.0

[0244] The installation program first attempts to find a matching subnetspecific group, i.e. “9.117.81.0”. Since the server group is not in thetable, it then attempts to find a matching domain specific group, i.e.fishkill.ibm.com. Since the server group exists, group“fishkill.ibm.com” becomes the candidate staging server group.

[0245] The program randomly selects a staging server from the group ofcandidate servers. Since only one server is contained in the group,“flounder.fishkill.ibm.com” is selected. If the installation programfails to connect to the server or fails to download the package imagefiles from the server, then it removes the server from the group ofcandidate servers and attempts to select another server. Since the groupcontains no other servers, the program now determines whether a defaultgroup exists for the group of candidate servers.

[0246] The master default server group is associated with group“fishkill.ibm.com” (default_group=default). Therefore, the masterdefault server group becomes the group of candidate servers. Before thenew group is used, the user is prompted with a standard message. Themaster default server group is the last group attempted.

EXAMPLE 4 Using the Master Default Group

[0247] The client workstation has the following TCP/IP information:hostname stumpy.endicott.ibm.com i.p. 9.115.61.34 address subnet255.255.255.0 mask subnet 9.115.61.0

[0248] The installation unsuccessfully attempts to find subnet specificserver group “9.115.61.0”, domain specific server group“endicott.ibm.com”, and a subnet range server group that contains subnet“9.115.61.0”. Since the user is not using a VPN, it also fails to find aVPN server group. The group of candidate servers automatically becomesthe master default server group. That is the only server groupattempted.

EXAMPLE 5 Using a Subnet Range Server Group W/Associated SDC DefaultGroup

[0249] The client workstation has the following TCP/IP information:hostname vuozzo.southbury.ibm.com i.p. 9.117.10.45 address subnet255.255.255.0 mask subnet 9.117.35.0

[0250] The installation program unsuccessfully attempts to find subnetspecific group “9.117.10.0” and domain specific server group“southbury.ibm.com”. Since the subnet is included in subnet range servergroup “SUB-9.117.0.0-9.117.31.0”, the subnet range server group becomesthe candidate staging server group.

EXAMPLE 6 Using a VPN Internal IP Address Range Server Group

[0251] The client workstation has the following TCP/IP information:hostname vuozzo.southbury.ibm.com i.p. 10.111.222.333 address subnet255.255.255.0 mask subnet 10.111.222.0 Internal 9.31.111.222 IP address

[0252] Since the internal IP address is included in internal IP addressrange server group “VPN-9.31.0.0-9.31.255.255”, the internal IP addressrange server group becomes the candidate staging server group.

[0253] First Contact Server Override File

[0254] The first contact server contains the server redirection table.The default first contact server for this solution is the corporateintranet FTP server. The master web server for ISSI contains a file thatallows an override to the client's definitions for: the first contactserver, directory for the staging server redirection table, accessprotocol (NOS) and the userid and password. The override is accomplishedby including the contents of the override file in each package parameterfile sent to the client during package delivery. This facilitatesautomated maintenance of the first contact server definition. The formatof this file is described in Table 4 “First Contact Server Override FileSpecification (frstcon.ovr)”.

[0255] Table: First Contact Server Override File Specification(frstcon.ovr)

[0256] The first contact server override file is located on the masterWeb server. It is appended to all package parameter files that areconstructed by the ISSI CGI script. The contents of this file arecompared to those in the clients WEB.INI file and if different, theWEB.INI file is updated to match this file. This provides the capabilityto update WEB.INI file settings without end-user intervention.[Stanza]/Key name Description ServerName= Name of the first contactserver Nos= Network operating system to use to access the image server(NFS, FTP, NTS...); Overridden by package parameter fileRemoteServerPath= The root directory on the server where the imageserver redirection table is located key= Flag indicating the encryptionlevel of key1 and key2 (00=key1/key2 plain text, 11= key1/key2 Level 1encrypted) key1= Userid for access to the first contact server key2=Password for access to first contact server

[0257] Sample First Contact Server Override File:

[0258] servername=d02ftp001.southbury.ibm.com

[0259] nos=ftp

[0260] remoteserverpath=/home/ospwebc2/swdist/repos

[0261] key=11

[0262] key1=xxxxx

[0263] key2=xxxxx

[0264] Table 5: Package Server Availability Tables

[0265] There will be one package server availability table per package.Each table will list each server that contains the package. The tablenaming convention is as follows: <pkgspec>_<nls>_<packagingversion>_<package owner>_<OS>.tbl. [Stanza]/Key name DescriptionServerName1=TRUE First server containing package ServerName2=TRUE Secondserver containing package ... ... ServerNameN=TRUE Nth server containingpackage

[0266] Sample Package Server AvailabilityTable—LFG97000_US_(—)3_PLAT_W32.TBL

[0267] morticia.pok.ibm.com=TRUE

[0268] sybil.pok.ibm.com=TRUE

[0269] Staging Server

[0270] The staging server hosts the installation images of the softwarepackages. These images are installed directly from the staging servervia NFS or moved to the target via FTP or HTTP for local installation.

[0271] Source Image Location

[0272] The source image repository can be located (“rooted”) anywhere onthe staging server. This location must correlate with theRemoteServerPath value stored in the image server redirection table forthat staging server. Subordinate directories must follow the OSPPackaging Architecture.

[0273] Source Image Access

[0274] A userid and password pair is used to access the source imagesvia FTP when the local staging option has been selected.

[0275] Directory Structure

[0276] The package repository specification is consistent with the OSPpackaging directory structure.

[0277] Example Embodiments:

[0278] The electronic distribution and installation of software by“pull” requires that a recipient Client machine successfully connect toa provider Server (“Client” herein refers to a target machine requestingsoftware and “Server” refers to a package, or image, staging server). Itis also desirable that the system optimally handles a client connectedvia a Virtual Private Network (VPN) through an Internet Service Provider(ISP). Potentially the VPN client is traveling and connected via amobile dial-up connection:

[0279] A. that is available on the network (functionally in operation,not “down”),

[0280] B. that contains the desired software/data package, and

[0281] C. that will authenticate permission to perform the operation.

[0282] In addition, it is desirable that the Server be:

[0283] A. reachable via a common point of contact,

[0284] B. capable of membership in a global layout ofheterogeneously-populated peer Servers,

[0285] C. topologically near to the Client (or VPN Client),

[0286] D. randomly chosen for the purpose of load balancing from a groupof topologically-equidistant peer Servers if such group exists, and

[0287] E. provide a fallback Server option or succession of options.

[0288] The IBM Standard Software Installer (henceforth ISSI) wasdeveloped and is frequently enhanced to meet these needs. ISSI does notrequire that the Client be registered to a specific server; rather, anISSI client need only visit a central web site to select a softwarepackage for download and installation. Upon selection of a specificsoftware package the underlying logic of ISSI will:

[0289] A. determine the location of the Client in the network topology,

[0290] B. create a list (candidate server table) of the names ofpotential Servers prioritized and grouped by various parameters such astopological-nearness,

[0291] C. retrieve a list (package server availability table) of thenames of Servers that actually are populated with the desired package,

[0292] D. filter the candidate server table by eliminating those thatare not also found in the package server availability table,

[0293] E. choose a Server from the highest priority grouping in thefiltered candidate server table, and then attempt a delivery andinstallation. In the event of a failure (possibly due to the Server notbe available on the network) an alternative Server is chosen from thesame Server grouping (if one is available, or from the next lowerpriority Server grouping if not) and the delivery re-attempted. Ifrepeated failures and the associated invalidation of those Serversexhaust the candidate server table, then a master “default server group”list is used. In the forgoing, choosing is accomplished by any effectivealgorithm known including “pseudo” randomly. The logic described in thisstep forms the central idea of this disclosure.

[0294] Note: the package server availability table is automaticallyupdated on a regular basis by an agent that queries the set of knownServers for package availability.

[0295] The specific invention disclosed is the inclusion of thehierarchy of Server groupings into the existing ISSI architecture. Anexample of a Server grouping hierarchy, in order of decreasing priority,is:

[0296] Server Grouping Hierarchy:

[0297] A. Building 052 (subnet)

[0298] B. Poughkeepsie site (domain)

[0299] C. New York State

[0300] D. North-Eastern Region

[0301] E. East Coast

[0302] F. United States

[0303] G. Default

[0304] The advantage of the Server grouping hierarchy method is that itenables the possibility of rapidly assembled and easily managedaggregation of Servers into groups that can be ranked and exploited byISSI using topology-sensitive and package distribution-sensitive logic.

[0305] The master web server contains a set of tables that are used toidentify the Server to be used for a package installation. The firsttable used is the Server redirection table. The table, which defines theglobal Server topology, specifies the following:

[0306] Server Redirection Table

[0307] A. Each ISSI Server.

[0308] B. Domain specific server groups.

[0309] C. Subnet specific server groups.

[0310] D. Subnet range server groups.

[0311] E. VPN internal IP Address range server groups (referred to asVPN server groups).

[0312] F. Locale specific default server groups.

[0313] G. A master default server group.

[0314] H. A list of default subnet masks.

[0315] The table is maintained by the Service Provider with informationsupplied by service delivery center (locale-specific, or “SDC”)representatives. The table is used by the Service Provider'sinstallation programs to identify the server to be used for a specificpackage installation. The decision is based on the target machine'sTCP/IP domain name or the subnet portion of its IP address or VPNinformation. In general, the staging server redirection algorithm usesthe domain, subnet or VPN information to identify a server group that isgeographically close to the client machine. It randomly selects a serverfrom that server group to perform the installation. Locale-specificrepresentatives provide the Service Provider with the staging server andserver group information required to define their locale's topology. Forlocations that define TCP/IP domains based on specific geographicallocations, domain specific server groups are the preferred method foridentifying the candidate servers to be used for deliveries to theirclients. For locations were TCP/IP domains are spread over wide orscattered geographical areas, subnet specific server and subnet rangegroups are used (in that order). Subnet specific server groups mayrepresent a class B or Class C subnet. For remote users connected to anInternet Service Provider (ISP) network accessing the corporate networkvia a VPN client, VPN server groups are used. Locale-specificrepresentatives may also define a locale-specific default server group.The locale-specific default server group is associated with thecorresponding locale-specific domain, subnet, subnet range, or VPNserver groups. It is used when none of the servers in a domain, subnet,subnet range, or VPN server group can be used to deliver a package. Thelocale-specific representative may also specify the “SDC default groupmessage” that is displayed to the customer before a locale-specificdefault server group is used. When defining the locale-specific defaultgroup, the locale-specific representative specifies whether the masterdefault server group is to be used in the case that none of the serversin the locale-specific default group can be used to install the package.

[0316] The table contains a special server group, the master defaultserver group, which is used in two circumstances: (1) when no domain,subnet or VPN group matches a client's IP/VPN information, or (2) whenno server in a locale-specific default server group can be used todeliver a package. The master default server group is guaranteed tocontain at least one Service Provider owned server that contains allproduction ISSI packages.

[0317] In addition to the image server redirection table, the master webserver contains a number of package server availability tables. Theserver contains one table per ISSI package. Each table contains thenames of the staging servers that contain the package. The tables aregenerated by an agent which periodically connects to every stagingserver to discover its packages. In general, the staging serverredirection algorithm uses the corresponding package server availabilitytable to identify the servers within a selected server group thatcontain the respective package.

[0318] Preferred Embodiment of a Server Redirection Algorithm:

[0319] The Server redirection algorithm follows:

[0320] 1. Obtain the Client machine's TCP/IP address, subnet mask anddomain. Using the IP address and subnet mask, determine the Clientmachine's subnet 501.

[0321] 2. Retrieve 502 the Server redirection table 503 and thecorresponding package server availability table 504 from the firstcontact server.

[0322] 3. Using the Server redirection table 503, identify the servergroup to be used as the “group of candidate servers”. The followingoptions are attempted in the order specified below. Once a successfuloptions is found, proceed with step 4:

[0323] a. Look for a matching subnet specific server group 505.

[0324] b. Look for a subnet range server group that includes targetmachine's subnet 511.

[0325] c. Look for a domain specific server group 507.

[0326] d. Attempt to query the MTS Global Net Client (remote dialupmodem client application) for the target machine's internal IP address750. If an internal address is obtained, look for a VPN internal IPaddress range server group that includes the target machine's internalIP address 752.

[0327] e. Request the internal IP address for the target machine fromthe servers listed in section IPAddrQueryServers of the ISSI routingtable (i.e., attempt each server until the request is satisfied) 753.Details of the request are explained in section “Redirecting VPNClients” (below). If an internal address is obtained, look for a VPNinternal IP address range server group that includes the targetmachine's internal IP address 757.

[0328] f. Retrieve 704 the list of default subnet masks found in therouting table. For each default subnet mask, use the target machine'sTCP/IP address and default subnet mask to create a “class B subnet” 708.Look for a corresponding subnet specific server group. If none is found712, look for a subnet range server group 709 that includes the targetmachines class B subnet. If none is found, then use the master defaultserver group 509.

[0329] 4. Using the package server availability table 504, identify theServers in the group of candidate servers that contain the package.Remove Servers that do not contain the package from the group ofcandidate servers 610.

[0330] 5. Randomly choose a Server from the group of candidate servers611. If a failure occurs connecting to the Server or downloading thepackage image from the Server, then the chosen Server is excluded fromthe group of candidate servers 612. If the group of candidate servers isexhausted 620, then proceed with the next step 614. Otherwise, repeatthis step 611.

[0331] 6. If none of the Servers in the group of candidate servers canbe used to successfully install the product 615, then determine the typeof default server group specified for the group of candidate servers (byinspecting keyword “default_group”) 617. Proceed as follows depending onthe type of default server group specified:

[0332] a) If no default server group is specified(“default_group=NONE”), then the installation can not be performed 616.If the group of candidate servers is the master default group, then nodefault server group will be specified for it. Note that the masterdefault server group is the last server group that can possibly beattempted, so it must be specified with no default group.

[0333] b) If a locale-specific default server group is specified(“default_group=default_<SDC reference>”), then repeat steps 4-6 617with the locale-specific default server group as the group of candidateservers. If a locale-specific default group message is available, themessage is first displayed to inform the user than a locale-specificdefault group is about to be used.

[0334] c) If the master default server group is specified(“default_group=default”), then repeat steps 4-6 617 with the masterdefault server group as the group of candidate servers. A standardmessage is first displayed to inform the user that the master defaultgroup is about to be used.

[0335] Redirecting VPN Clients

[0336] Redirection of Virtual Private Network clients is accomplishedby:

[0337] (1) obtaining the client's internal IP address, and (2)identifying a VPN internal IP address range server group that includesthe internal IP address.

[0338] The ISSI client code uses two methods to discover the client'sinternal IP address. The first method involves communicating with theMTS Global Net Client, IBM's standard Client for e-business VPN client,via the MTS API 750. The second method involves requesting the internalIP address from servers listed in section IPAddrQueryServers of the ISSIrouting table 753. The server requests are made by sending an HTTPtransaction to either a Web page containing a server side include or aCGI script. The server request method and the corresponding Web page orCGI script are specified in the ISSI routing table for each server. Theserver side include and the CGI script query environment variableREMOTE_ADDR, which contains the client's IP address as viewed by the Webserver, and returns the value to the ISSI client code. The ISSI clientcode compares the “candidate” VPN internal IP address to the targetmachine's “locally obtained” IP address 751/755. If the values aredifferent, then the ISSI client code looks for a VPN internal IP addressrange server group that includes the VPN internal IP address 752/756.

[0339] While the invention has been described in detail herein inaccordance with certain preferred embodiments thereof, manymodifications and changes therein may be effected by those skilled inthe art. Accordingly, it is intended by the appended claims to cover allsuch modifications and changes as fall within the true spirit and scopeof the invention.

[0340] The present invention can be included in an article ofmanufacture (e.g., one or more computer program products) having, forinstance, computer usable media. The media has embodied therein, forinstance, computer readable program code means for providing andfacilitating the capabilities of the present invention. The article ofmanufacture can be included as a part of a computer system or soldseparately.

[0341] Additionally, at least one program storage device readable by amachine, tangibly embodying at least one program of instructionsexecutable by the machine to perform the capabilities of the presentinvention can be provided.

[0342] The flow diagrams depicted herein are just examples. There may bemany variations to these diagrams or the steps (or operations) describedtherein without departing from the spirit of the invention. Forinstance, the steps may be performed in a differing order, or steps maybe added, deleted or modified. All of these variations are considered apart of the claimed invention.

[0343] Although preferred embodiments have been depicted and describedin detail herein, it will be apparent to those skilled in the relevantart that various modifications, additions, substitutions and the likecan be made without departing from the spirit of the invention and theseare therefore considered to be within the scope of the invention asdefined in the following claims.

What is claimed is:
 1. A method for redirecting a client request for apackage to a server having the package, the method comprising the stepsof: receiving a request from a client computer to download a package ofdigital data; querying a client application running on the client forclient location information; if client location information is received,using the client location information to select a server for downloadingthe package; and downloading the package from the selected server to theclient computer.
 2. The method according to claim 1 wherein using theclient location information comprises the further steps of: receiving anidentifier from the requesting client computer, the identifieridentifying the requesting client computer; retrieving serverredirection information from storage, the server redirection informationcomprising a representation of a plurality of groups of candidate serveridentities, each group of candidate server identities comprising one ormore candidate server identities; retrieving availability informationfrom storage, the availability information comprising the identities ofservers having the specified package available for downloading;selecting a preferred group of the one or more groups of candidateserver identities, the preferred group being selected according topredetermined criteria; and downloading the specified package to therequesting client computer from a first candidate server identified inthe preferred group of servers if the first candidate server is a serveridentified in the availability information.
 3. The method according toclaim 2 comprising the further step of downloading the specified packageto the requesting client computer from a second candidate serveridentified in a default group of servers if the second candidate serveris a server identified in the availability information and the specifiedpackage can not be downloaded from the first candidate server.
 4. Themethod according to claim 3 comprising the further step of downloadingthe specified package to the requesting client computer from a thirdcandidate server identified in a master default group of servers if thethird candidate server is a server identified in the availabilityinformation and the specified package can not be downloaded from thesecond candidate server.
 5. The method according to claim 1 wherein theclient location information is any one of an internal IP address,telephone area code, a postal zip code or Global Positioning System(GPS) data.
 6. The method according to claim 1 wherein the clientapplication is a telephone modem dial-up application.
 7. The methodaccording to claim 1 wherein the querying a client application stepcomprises the further steps of: retrieving the client internal IPaddress from a list of servers in a routing table; using the internal IPaddress if it is equal to a locally obtained IP address; and using aninternal IP address range server group that includes the internal IPaddress if the internal IP address is not equal to the locally obtainedIP address.
 8. A computer program product for redirecting a clientrequest for a package to a server having the package, the computerprogram product comprising: a storage medium readable by a processingcircuit and storing instructions for execution by the processing circuitfor performing a method comprising: receiving a request from a clientcomputer to download a package of digital data; querying a clientapplication running on the client for client location information; ifclient location information is received, using the client locationinformation to select a server for downloading the package; anddownloading the package from the selected server to the client computer.9. The computer program product according to claim 8 wherein using theclient location information comprises the further steps of: receiving anidentifier from the requesting client computer, the identifieridentifying the requesting client computer; retrieving serverredirection information from storage, the server redirection informationcomprising a representation of a plurality of groups of candidate serveridentities, each group of candidate server identities comprising one ormore candidate server identities; retrieving availability informationfrom storage, the availability information comprising the identities ofservers having the specified package available for downloading;selecting a preferred group of the one or more groups of candidateserver identities, the preferred group being selected according topredetermined criteria; and downloading the specified package to therequesting client computer from a first candidate server identified inthe preferred group of servers if the first candidate server is a serveridentified in the availability information.
 10. The computer programproduct according to claim 9 comprising the further step of downloadingthe specified package to the requesting client computer from a secondcandidate server identified in a default group of servers if the secondcandidate server is a server identified in the availability informationand the specified package can not be downloaded from the first candidateserver.
 11. The computer program product according to claim 10comprising the further step of downloading the specified package to therequesting client computer from a third candidate server identified in amaster default group of servers if the third candidate server is aserver identified in the availability information and the specifiedpackage can not be downloaded from the second candidate server.
 12. Thecomputer program product according to claim 8 wherein the clientlocation information is any one of an internal IP address, telephonearea code, a postal zip code or Global Positioning System (GPS) data.13. The computer program product according to claim 8 wherein the clientapplication is a telephone modem dial-up application.
 14. The computerprogram product according to claim 8 wherein the querying a clientapplication step comprises the further steps of: retrieving the clientinternal IP address from a list of servers in a routing table; using theinternal IP address if it is equal to a locally obtained IP address; andusing an internal IP address range server group that includes theinternal IP address if the internal IP address is not equal to thelocally obtained IP address.
 15. A system for redirecting a clientrequest for a package to a server having the package, the systemcomprising: a network; a client system in communication with thenetwork; a server system in communication with the network, wherein saidserver system includes instructions to execute a method comprising:receiving a request from a client computer to download a package ofdigital data; querying a client application running on the client forclient location information; if client location information is received,using the client location information to select a server for downloadingthe package; and downloading the package from the selected server to theclient computer.
 16. The system according to claim 15 wherein the stepof using the client location information comprises the further steps of:receiving an identifier from the requesting client computer, theidentifier identifying the requesting client computer; retrieving serverredirection information from storage, the server redirection informationcomprising a representation of a plurality of groups of candidate serveridentities, each group of candidate server identities comprising one ormore candidate server identities; retrieving availability informationfrom storage, the availability information comprising the identities ofservers having the specified package available for downloading;selecting a preferred group of the one or more groups of candidateserver identities, the preferred group being selected according topredetermined criteria; and downloading the specified package to therequesting client computer from a first candidate server identified inthe preferred group of servers if the first candidate server is a serveridentified in the availability information.
 17. The system according toclaim 16 wherein the method comprises the further step of downloadingthe specified package to the requesting client computer from a secondcandidate server identified in a default group of servers if the secondcandidate server is a server identified in the availability informationand the specified package can not be downloaded from the first candidateserver.
 18. The system according to claim 17 wherein the methodcomprises the further step of downloading the specified package to therequesting client computer from a third candidate server identified in amaster default group of servers if the third candidate server is aserver identified in the availability information and the specifiedpackage can not be downloaded from the second candidate server.
 19. Thesystem according to claim 16 wherein the client location information isany one of an internal IP address, telephone area code, a postal zipcode or Global Positioning System (GPS) data.
 20. The system accordingto claim 16 wherein the querying a client application step comprises thefurther steps of: retrieving the client internal IP address from a listof servers in a routing table; using the internal IP address if it isequal to a locally obtained IP address; and using an internal IP addressrange server group that includes the internal IP address if the internalIP address is not equal to the locally obtained IP address.